﻿''' <summary>
''' メイン画面のフォームです。
''' </summary>
''' <remarks></remarks>
Friend NotInheritable Class Main

#Region " パブリックコンストラクター "
  ''' <summary>
  ''' Main クラスの新しいインスタンスを初期化します。
  ''' </summary>
  ''' <remarks></remarks>
  Public Sub New()
    ' この呼び出しはデザイナーで必要です。
    InitializeComponent()
    ' InitializeComponent() 呼び出しの後で初期化を追加します。

    Me.ShowStatusBarText()  'ステータスバーにテキストを表示
    If DirectoryAccess.CanConnectDomain = False Then  'ドメインに接続できない時
      Me.DisableControls()  'ドメイン専用のコントロールを無効にする
    End If
  End Sub
#End Region

#Region " イベントハンドラ "
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Me.Button1.Enabled = False
    Me.ShowListForm()   'リストフォームを表示
    Me.Button1.Enabled = True
  End Sub

  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Me.Button2.Enabled = False
    Using domain = DirectoryAccess.GetDomain()    'ドメインを取得
      Using fm As New DomainInfo(domain)
        fm.ShowDialog(Me)
      End Using
    End Using
    Me.Button2.Enabled = True
  End Sub
#End Region

#Region " プライベートメソッド "
  ''' <summary>
  ''' ステータスバーにテキストを表示します。
  ''' </summary>
  ''' <remarks></remarks>
  Private Sub ShowStatusBarText()
    Try
      If DirectoryAccess.IsLogonDomain Then
        Me.StatusLabel.Text = String.Format("ドメイン '{0}' にログオンしています。", DirectoryAccess.DomainName)
      Else
        If DirectoryAccess.CanConnectDomain Then
          Me.StatusLabel.Text = "ローカルログオンしています。（ドメインアクセス可）"
        Else
          Me.StatusLabel.Text = "ローカルログオンしています。"
        End If
      End If
    Catch
      Me.StatusLabel.Text = "ドメインに接続できませんでした。"
      Me.Enabled = False
    End Try
  End Sub

  ''' <summary>
  ''' ドメイン専用のコントロールを無効にします。
  ''' </summary>
  ''' <remarks></remarks>
  Private Sub DisableControls()
    Me.rb_computer.Enabled = False
    Me.rb_ou.Enabled = False
    Me.rb_printer.Enabled = False
    Me.rb_volume.Enabled = False
    Me.Button2.Enabled = False
  End Sub

  ''' <summary>
  ''' リストフォームを表示します。
  ''' </summary>
  ''' <remarks></remarks>
  Private Sub ShowListForm()
    If Me.rb_user.Checked Then
      Using fm As New UserList()
        fm.ShowDialog(Me)
      End Using
      Return
    End If

    If Me.rb_group.Checked Then
      Using fm As New GroupList()
        fm.ShowDialog(Me)
      End Using
      Return
    End If

    If Me.rb_computer.Checked Then
      Using fm As New ComputerList()
        fm.ShowDialog(Me)
      End Using
      Return
    End If

    If Me.rb_ou.Checked Then
      Using fm As New OUList()
        fm.ShowDialog(Me)
      End Using
      Return
    End If

    If Me.rb_printer.Checked Then
      Using fm As New PrinterList()
        fm.ShowDialog(Me)
      End Using
    Else
      Using fm As New VolumeList()
        fm.ShowDialog(Me)
      End Using
    End If
  End Sub
#End Region
End Class